import createElement from "./createElement";

export default function patchVNode(oldNode,newNode){
  // 同一个节点需要比较
  if (oldNode === newNode) return
  if (newNode.text !== undefined && (newNode.children === undefined || newNode.children.length === 0)){
    // 有text属性
    if (newNode.text !== oldNode.text){
      // 新text和老text不同直接写入新的
      oldNode.elm.innerText = newNode.text
    }
  } else {
    // 没有text属性
    // 判断老的有没有子节点
    if (oldNode.children != undefined && oldNode.children.length > 0) {
      // diff算法核心
      /*  前节点向后移动，后节点向前移动
      *  新前旧前
      *  新后旧后
      *  新后旧前 发生 新前指向的节点，移动旧后之后
      *  新前旧后 发生 新签指向的酒店，移动旧前之前
      *
      * */
    } else {
      // 老的没有，新的有child
      oldNode.elm.innerText = ''
      newNode.children.map(function (item){
        oldNode.elm.appendChild(createElement(item))
      })
    }
  }
}